home *** CD-ROM | disk | FTP | other *** search
/ Amiga Format CD 34 / Amiga Format CD34 (1998-11-20)(Future Publishing)(GB)[!][Christmas issue].iso / -seriously_amiga- / programming / c / mesa-2.6 / include / gl / glu.h < prev    next >
C/C++ Source or Header  |  1998-10-01  |  20KB  |  447 lines

  1. /* $Id: glu.h,v 1.9 1998/01/16 02:29:26 brianp Exp $ */
  2.  
  3. /*
  4.  * Mesa 3-D graphics library
  5.  * Version:  2.6
  6.  * Copyright (C) 1995-1997  Brian Paul
  7.  *
  8.  * This library is free software; you can redistribute it and/or
  9.  * modify it under the terms of the GNU Library General Public
  10.  * License as published by the Free Software Foundation; either
  11.  * version 2 of the License, or (at your option) any later version.
  12.  *
  13.  * This library is distributed in the hope that it will be useful,
  14.  * but WITHOUT ANY WARRANTY; without even the implied warranty of
  15.  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
  16.  * Library General Public License for more details.
  17.  *
  18.  * You should have received a copy of the GNU Library General Public
  19.  * License along with this library; if not, write to the Free
  20.  * Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
  21.  */
  22.  
  23.  
  24. /*
  25.  * glu.h
  26.  *
  27.  * Version 1.0  27 Jun 1998
  28.  * by Jarno van der Linden
  29.  * jarno@kcbbs.gen.nz
  30.  *
  31.  * File created from glu.h ver 1.9 using GenProtos
  32.  *
  33.  * Version 1.1  09 Aug 1998
  34.  * by Jarno van der Linden
  35.  * jarno@kcbbs.gen.nz
  36.  *
  37.  * - Added __stdargs to gluLookAt
  38.  *
  39.  * Version 2.0  13 Sep 1998
  40.  * by Jarno van der Linden
  41.  * jarno@kcbbs.gen.nz
  42.  *
  43.  * - Stubs are now #defined so that they pass the
  44.  *   current mesamainBase rather than the global one
  45.  */
  46.  
  47.  
  48. #ifndef GLU_H
  49. #define GLU_H
  50.  
  51.  
  52. #if defined(USE_MGL_NAMESPACE)
  53. #include "glu_mangle.h"
  54. #endif
  55.  
  56.  
  57. #ifdef __cplusplus
  58. extern "C" {
  59. #endif
  60.  
  61. #ifndef MAKE_MESAMAINLIB
  62. #include "pragmas/gl_pragmas.h"
  63. #endif
  64.  
  65. #include "GL/gl.h"
  66.  
  67.  
  68. #ifdef macintosh
  69.     #pragma enumsalwaysint on
  70.     #if PRAGMA_IMPORT_SUPPORTED
  71.     #pragma import on
  72.     #endif
  73. #endif
  74.  
  75.  
  76. #define GLU_VERSION_1_1        1
  77.  
  78.  
  79. #define GLU_TRUE   GL_TRUE
  80. #define GLU_FALSE  GL_FALSE
  81.  
  82.  
  83. enum {
  84.     /* Normal vectors */
  85.     GLU_SMOOTH    = 100000,
  86.     GLU_FLAT    = 100001,
  87.     GLU_NONE    = 100002,
  88.  
  89.     /* Quadric draw styles */
  90.     GLU_POINT    = 100010,
  91.     GLU_LINE    = 100011,
  92.     GLU_FILL    = 100012,
  93.     GLU_SILHOUETTE    = 100013,
  94.  
  95.     /* Quadric orientation */
  96.     GLU_OUTSIDE    = 100020,
  97.     GLU_INSIDE    = 100021,
  98.  
  99.     /* Tesselator */
  100.     GLU_BEGIN    = 100100,
  101.     GLU_VERTEX    = 100101,
  102.     GLU_END        = 100102,
  103.     GLU_ERROR    = 100103,
  104.     GLU_EDGE_FLAG    = 100104,
  105.  
  106.     /* Contour types */
  107.     GLU_CW        = 100120,
  108.     GLU_CCW        = 100121,
  109.     GLU_INTERIOR    = 100122,
  110.     GLU_EXTERIOR    = 100123,
  111.     GLU_UNKNOWN    = 100124,
  112.  
  113.     /* Tesselation errors */
  114.     GLU_TESS_ERROR1    = 100151,  /* missing gluEndPolygon */
  115.     GLU_TESS_ERROR2 = 100152,  /* missing gluBeginPolygon */
  116.     GLU_TESS_ERROR3 = 100153,  /* misoriented contour */
  117.     GLU_TESS_ERROR4 = 100154,  /* vertex/edge intersection */
  118.     GLU_TESS_ERROR5 = 100155,  /* misoriented or self-intersecting loops */
  119.     GLU_TESS_ERROR6 = 100156,  /* coincident vertices */
  120.     GLU_TESS_ERROR7 = 100157,  /* all vertices collinear */
  121.     GLU_TESS_ERROR8 = 100158,  /* intersecting edges */
  122.     GLU_TESS_ERROR9 = 100159,  /* not coplanar contours */
  123.  
  124.     /* NURBS */
  125.     GLU_AUTO_LOAD_MATRIX    = 100200,
  126.     GLU_CULLING        = 100201,
  127.     GLU_PARAMETRIC_TOLERANCE= 100202,
  128.     GLU_SAMPLING_TOLERANCE    = 100203,
  129.     GLU_DISPLAY_MODE    = 100204,
  130.     GLU_SAMPLING_METHOD    = 100205,
  131.     GLU_U_STEP        = 100206,
  132.     GLU_V_STEP        = 100207,
  133.  
  134.     GLU_PATH_LENGTH        = 100215,
  135.     GLU_PARAMETRIC_ERROR    = 100216,
  136.     GLU_DOMAIN_DISTANCE    = 100217,
  137.  
  138.     GLU_MAP1_TRIM_2        = 100210,
  139.     GLU_MAP1_TRIM_3        = 100211,
  140.  
  141.     GLU_OUTLINE_POLYGON    = 100240,
  142.     GLU_OUTLINE_PATCH    = 100241,
  143.  
  144.     GLU_NURBS_ERROR1  = 100251,   /* spline order un-supported */
  145.     GLU_NURBS_ERROR2  = 100252,   /* too few knots */
  146.     GLU_NURBS_ERROR3  = 100253,   /* valid knot range is empty */
  147.     GLU_NURBS_ERROR4  = 100254,   /* decreasing knot sequence */
  148.     GLU_NURBS_ERROR5  = 100255,   /* knot multiplicity > spline order */
  149.     GLU_NURBS_ERROR6  = 100256,   /* endcurve() must follow bgncurve() */
  150.     GLU_NURBS_ERROR7  = 100257,   /* bgncurve() must precede endcurve() */
  151.     GLU_NURBS_ERROR8  = 100258,   /* ctrlarray or knot vector is NULL */
  152.     GLU_NURBS_ERROR9  = 100259,   /* can't draw pwlcurves */
  153.     GLU_NURBS_ERROR10 = 100260,   /* missing gluNurbsCurve() */
  154.     GLU_NURBS_ERROR11 = 100261,   /* missing gluNurbsSurface() */
  155.     GLU_NURBS_ERROR12 = 100262,   /* endtrim() must precede endsurface() */
  156.     GLU_NURBS_ERROR13 = 100263,   /* bgnsurface() must precede endsurface() */
  157.     GLU_NURBS_ERROR14 = 100264,   /* curve of improper type passed as trim curve */
  158.     GLU_NURBS_ERROR15 = 100265,   /* bgnsurface() must precede bgntrim() */
  159.     GLU_NURBS_ERROR16 = 100266,   /* endtrim() must follow bgntrim() */
  160.     GLU_NURBS_ERROR17 = 100267,   /* bgntrim() must precede endtrim()*/
  161.     GLU_NURBS_ERROR18 = 100268,   /* invalid or missing trim curve*/
  162.     GLU_NURBS_ERROR19 = 100269,   /* bgntrim() must precede pwlcurve() */
  163.     GLU_NURBS_ERROR20 = 100270,   /* pwlcurve referenced twice*/
  164.     GLU_NURBS_ERROR21 = 100271,   /* pwlcurve and nurbscurve mixed */
  165.     GLU_NURBS_ERROR22 = 100272,   /* improper usage of trim data type */
  166.     GLU_NURBS_ERROR23 = 100273,   /* nurbscurve referenced twice */
  167.     GLU_NURBS_ERROR24 = 100274,   /* nurbscurve and pwlcurve mixed */
  168.     GLU_NURBS_ERROR25 = 100275,   /* nurbssurface referenced twice */
  169.     GLU_NURBS_ERROR26 = 100276,   /* invalid property */
  170.     GLU_NURBS_ERROR27 = 100277,   /* endsurface() must follow bgnsurface() */
  171.     GLU_NURBS_ERROR28 = 100278,   /* intersecting or misoriented trim curves */
  172.     GLU_NURBS_ERROR29 = 100279,   /* intersecting trim curves */
  173.     GLU_NURBS_ERROR30 = 100280,   /* UNUSED */
  174.     GLU_NURBS_ERROR31 = 100281,   /* unconnected trim curves */
  175.     GLU_NURBS_ERROR32 = 100282,   /* unknown knot error */
  176.     GLU_NURBS_ERROR33 = 100283,   /* negative vertex count encountered */
  177.     GLU_NURBS_ERROR34 = 100284,   /* negative byte-stride */
  178.     GLU_NURBS_ERROR35 = 100285,   /* unknown type descriptor */
  179.     GLU_NURBS_ERROR36 = 100286,   /* null control point reference */
  180.     GLU_NURBS_ERROR37 = 100287,   /* duplicate point on pwlcurve */
  181.  
  182.     /* Errors */
  183.     GLU_INVALID_ENUM        = 100900,
  184.     GLU_INVALID_VALUE        = 100901,
  185.     GLU_OUT_OF_MEMORY        = 100902,
  186.     GLU_INCOMPATIBLE_GL_VERSION    = 100903,
  187.  
  188.     /* New in GLU 1.1 */
  189.     GLU_VERSION    = 100800,
  190.     GLU_EXTENSIONS    = 100801
  191. };
  192.  
  193.  
  194. /*
  195.  * These are the GLU 1.1 typedefs.  GLU 1.2 has different ones!
  196.  */
  197. typedef struct GLUquadricObj GLUquadricObj;
  198.  
  199. typedef struct GLUtriangulatorObj GLUtriangulatorObj;
  200.  
  201. typedef struct GLUnurbsObj GLUnurbsObj;
  202.  
  203.  
  204.  
  205. #if defined(__BEOS__) || defined(__QUICKDRAW__)
  206. #pragma export on
  207. #endif
  208.  
  209.  
  210. /*
  211.  *
  212.  * Miscellaneous functions
  213.  *
  214.  */
  215.  
  216. extern __stdargs __saveds void APIENTRY gluLookAt( GLdouble eyex, GLdouble eyey, GLdouble eyez,
  217.                                          GLdouble centerx, GLdouble centery,
  218.                                          GLdouble centerz,
  219.                                          GLdouble upx, GLdouble upy, GLdouble upz );
  220.  
  221.  
  222. extern __asm __saveds void APIENTRY gluOrtho2D( register __fp0 GLdouble left, register __fp1 GLdouble right,
  223.                                                 register __fp2 GLdouble bottom, register __fp3 GLdouble top );
  224.  
  225.  
  226. extern __asm __saveds void APIENTRY gluPerspective( register __fp0 GLdouble fovy, register __fp1 GLdouble aspect,
  227.                                                     register __fp2 GLdouble zNear, register __fp3 GLdouble zFar );
  228.  
  229.  
  230. extern __asm __saveds void APIENTRY gluPickMatrix( register __fp0 GLdouble x, register __fp1 GLdouble y,
  231.                                                    register __fp2 GLdouble width, register __fp3 GLdouble height,
  232.                                                    register __a0 const GLint viewport[4] );
  233.  
  234. extern __asm __saveds GLint APIENTRY gluProject( register __fp0 GLdouble objx, register __fp1 GLdouble objy, register __fp2 GLdouble objz,
  235.                                                  register __a0 const GLdouble modelMatrix[16],
  236.                                                  register __a1 const GLdouble projMatrix[16],
  237.                                                  register __a2 const GLint viewport[4],
  238.                                                  register __a3 GLdouble *winx, register __a4 GLdouble *winy,
  239.                                                  register __a5 GLdouble *winz );
  240.  
  241. extern __asm __saveds GLint APIENTRY gluUnProject( register __fp0 GLdouble winx, register __fp1 GLdouble winy,
  242.                                                    register __fp2 GLdouble winz,
  243.